package com.eedi.framework.permission.dal.mapper;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.eedi.framework.mybatis.core.mapper.BaseMapperX;
import com.eedi.framework.permission.dal.dataobject.OrgUserRoleDO;
import org.apache.ibatis.annotations.Mapper;

import java.util.Collection;
import java.util.List;

@Mapper
public interface OrgUserRoleMapper extends BaseMapperX<OrgUserRoleDO> {

    default List<OrgUserRoleDO> selectListByUserId(String userId) {
        return selectList(OrgUserRoleDO::getOrgUserId, userId);
    }

    default void deleteListByUserIdAndRoleIdIds(String userId, Collection<String> roleIds) {
        delete(new LambdaQueryWrapper<OrgUserRoleDO>()
                .eq(OrgUserRoleDO::getOrgUserId, userId)
                .in(OrgUserRoleDO::getOrgRoleId, roleIds));
    }

    default void deleteListByUserId(String userId) {
        delete(new LambdaQueryWrapper<OrgUserRoleDO>().eq(OrgUserRoleDO::getOrgUserId, userId));
    }

    default void deleteListByRoleId(String roleId) {
        delete(new LambdaQueryWrapper<OrgUserRoleDO>().eq(OrgUserRoleDO::getOrgRoleId, roleId));
    }

    default List<OrgUserRoleDO> selectListByRoleIds(Collection<String> roleIds) {
        return selectList(OrgUserRoleDO::getOrgRoleId, roleIds);
    }
    default List<String> getByOrgUserId(String orgUserId) {
        return selectListByUserId(orgUserId).stream().map(OrgUserRoleDO::getOrgRoleId).toList();
    }

    default List<String> getByOrgRoleId(Collection<String> orgRoleIds) {
        return  selectList(
                new LambdaQueryWrapper<OrgUserRoleDO>().in(OrgUserRoleDO::getOrgRoleId,orgRoleIds)
        ).stream().map(OrgUserRoleDO::getOrgUserId).toList();

    }
}
